/*
 * Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 * File: ./org/omg/CORBA/DefinitionKind.java
 * From: ./ir.idl
 * Date: Fri Aug 28 16:03:31 1998
 *   By: idltojava Java IDL 1.2 Aug 11 1998 02:00:18
 */

package org.omg.CORBA;

/**
 * The class that provides the constants used to identify the type of an
 * Interface Repository object.  This class contains two kinds of constants,
 * those that are an <code>int</code> and those that are an instance of the class
 * <code>DefinitionKind</code>.  This class provides the method
 * <code>from_int</code>, which given one
 * of the <code>int</code> constants, creates the corresponding
 * <code>DefinitionKind</code> instance.  It also provides the method
 * <code>value</code>, which returns the <code>int</code> constant that
 * is the value for a <code>DefinitionKind</code> instance.
 *
 * @see IRObject
 */

public class DefinitionKind implements org.omg.CORBA.portable.IDLEntity {

  /**
   * The constant that indicates that an Interface Repository object
   * does not have a definition kind.
   */
  public static final int _dk_none = 0,

  /**
   * The constant that indicates that the type of an Interface Repository object
   * may be any type.
   */
  _dk_all = 1,

  /**
   * The constant that indicates that an Interface Repository object is an
   * attribute.
   */
  _dk_Attribute = 2,

  /**
   * The constant that indicates that an Interface Repository object is a
   * constant.
   */
  _dk_Constant = 3,

  /**
   * The constant that indicates that an Interface Repository object is an
   * exception.
   */

  _dk_Exception = 4,

  /**
   * The constant that indicates that an Interface Repository object is an
   * interface.
   */

  _dk_Interface = 5,

  /**
   * The constant that indicates that an Interface Repository object is a
   * module.
   */

  _dk_Module = 6,

  /**
   * The constant that indicates that an Interface Repository object is an
   * operation.
   */

  _dk_Operation = 7,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Typedef.
   */

  _dk_Typedef = 8,

  /**
   * The constant that indicates that an Interface Repository object is an
   * Alias.
   */

  _dk_Alias = 9,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Struct.
   */

  _dk_Struct = 10,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Union.
   */

  _dk_Union = 11,

  /**
   * The constant that indicates that an Interface Repository object is an
   * Enum.
   */

  _dk_Enum = 12,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Primitive.
   */

  _dk_Primitive = 13,

  /**
   * The constant that indicates that an Interface Repository object is a
   * String.
   */

  _dk_String = 14,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Sequence.
   */

  _dk_Sequence = 15,

  /**
   * The constant that indicates that an Interface Repository object is an
   * Array.
   */

  _dk_Array = 16,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Repository.
   */

  _dk_Repository = 17,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Wstring.
   */

  _dk_Wstring = 18,

  /**
   * The constant that indicates that an Interface Repository object is of type
   * Fixed.
   */

  _dk_Fixed = 19,

  /**
   * The constant that indicates that an Interface Repository object is a
   * Value.
   */

  _dk_Value = 20,

  /**
   * The constant that indicates that an Interface Repository object is a
   * ValueBox.
   */

  _dk_ValueBox = 21,

  /**
   * The constant that indicates that an Interface Repository object is a
   * ValueMember.
   */

  _dk_ValueMember = 22,

  /**
   * The constant that indicates that an Interface Repository object is of type
   * Native.
   */

  _dk_Native = 23,

  /**
   * The constant that indicates that an Interface Repository object
   * is representing an abstract interface.
   */
  _dk_AbstractInterface = 24;

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object has no definition kind.
   */

  public static final DefinitionKind dk_none = new DefinitionKind(_dk_none);

  /**
   * The wildcard <code>DefinitionKind</code> constant, useful
   * in all occasions where any
   * <code>DefinitionKind</code> is appropriate. The Container's
   * <code>contents</code> method
   * makes use of this constant to return all contained definitions of any kind.
   */

  public static final DefinitionKind dk_all = new DefinitionKind(_dk_all);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Attribute.
   */

  public static final DefinitionKind dk_Attribute = new DefinitionKind(_dk_Attribute);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a constant.
   */

  public static final DefinitionKind dk_Constant = new DefinitionKind(_dk_Constant);


  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Exception.
   */

  public static final DefinitionKind dk_Exception = new DefinitionKind(_dk_Exception);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Interface.
   */

  public static final DefinitionKind dk_Interface = new DefinitionKind(_dk_Interface);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Module.
   */

  public static final DefinitionKind dk_Module = new DefinitionKind(_dk_Module);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Operation.
   */

  public static final DefinitionKind dk_Operation = new DefinitionKind(_dk_Operation);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Typedef.
   */

  public static final DefinitionKind dk_Typedef = new DefinitionKind(_dk_Typedef);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Alias.
   */

  public static final DefinitionKind dk_Alias = new DefinitionKind(_dk_Alias);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Struct.
   */

  public static final DefinitionKind dk_Struct = new DefinitionKind(_dk_Struct);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Union.
   */

  public static final DefinitionKind dk_Union = new DefinitionKind(_dk_Union);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Enum.
   */

  public static final DefinitionKind dk_Enum = new DefinitionKind(_dk_Enum);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Primitive.
   */

  public static final DefinitionKind dk_Primitive = new DefinitionKind(_dk_Primitive);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a String.
   */

  public static final DefinitionKind dk_String = new DefinitionKind(_dk_String);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Sequence.
   */

  public static final DefinitionKind dk_Sequence = new DefinitionKind(_dk_Sequence);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is an Array.
   */

  public static final DefinitionKind dk_Array = new DefinitionKind(_dk_Array);


  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Repository.
   */

  public static final DefinitionKind dk_Repository = new DefinitionKind(_dk_Repository);


  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Wstring.
   */

  public static final DefinitionKind dk_Wstring = new DefinitionKind(_dk_Wstring);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Fixed value.
   */

  public static final DefinitionKind dk_Fixed = new DefinitionKind(_dk_Fixed);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Value.
   */

  public static final DefinitionKind dk_Value = new DefinitionKind(_dk_Value);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a ValueBox.
   */

  public static final DefinitionKind dk_ValueBox = new DefinitionKind(_dk_ValueBox);

  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a ValueMember.
   */

  public static final DefinitionKind dk_ValueMember = new DefinitionKind(_dk_ValueMember);


  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object is a Native value.
   */

  public static final DefinitionKind dk_Native = new DefinitionKind(_dk_Native);


  /**
   * The static instance of <code>DefinitionKind</code> indicating that an
   * Interface Repository object represents an abstract interface.
   */
  public static final DefinitionKind dk_AbstractInterface = new DefinitionKind(
      _dk_AbstractInterface);


  /**
   * Returns the <code>int</code> constant identifying the type of an IR object.
   *
   * @return the <code>int</code> constant from the class <code>DefinitionKind</code> that is the
   * value of this <code>DefinitionKind</code> instance
   */

  public int value() {
    return _value;
  }


  /**
   * Creates a <code>DefinitionKind</code> instance corresponding to the given code
   * .
   *
   * @param i one of the <code>int</code> constants from the class <code>DefinitionKind</code>
   * @return the <code>DefinitionKind</code> instance corresponding to the given code
   * @throws org.omg.CORBA.BAD_PARAM if the given parameter is not one of the <code>int</code>
   * constants from the class <code>DefinitionKind</code>
   */

  public static DefinitionKind from_int(int i) {
    switch (i) {
      case _dk_none:
        return dk_none;
      case _dk_all:
        return dk_all;
      case _dk_Attribute:
        return dk_Attribute;
      case _dk_Constant:
        return dk_Constant;
      case _dk_Exception:
        return dk_Exception;
      case _dk_Interface:
        return dk_Interface;
      case _dk_Module:
        return dk_Module;
      case _dk_Operation:
        return dk_Operation;
      case _dk_Typedef:
        return dk_Typedef;
      case _dk_Alias:
        return dk_Alias;
      case _dk_Struct:
        return dk_Struct;
      case _dk_Union:
        return dk_Union;
      case _dk_Enum:
        return dk_Enum;
      case _dk_Primitive:
        return dk_Primitive;
      case _dk_String:
        return dk_String;
      case _dk_Sequence:
        return dk_Sequence;
      case _dk_Array:
        return dk_Array;
      case _dk_Repository:
        return dk_Repository;
      case _dk_Wstring:
        return dk_Wstring;
      case _dk_Fixed:
        return dk_Fixed;
      case _dk_Value:
        return dk_Value;
      case _dk_ValueBox:
        return dk_ValueBox;
      case _dk_ValueMember:
        return dk_ValueMember;
      case _dk_Native:
        return dk_Native;
      default:
        throw new org.omg.CORBA.BAD_PARAM();
    }
  }

  /**
   * Constructs a <code>DefinitionKind</code> object with its <code>_value</code>
   * field initialized with the given value.
   *
   * @param _value one of the <code>int</code> constants defined in the class
   * <code>DefinitionKind</code>
   */

  protected DefinitionKind(int _value) {
    this._value = _value;
  }

  /**
   * The field that holds a value for a <code>DefinitionKind</code> object.
   *
   * @serial
   */

  private int _value;
}
